package com.ncr.travel.appmgr.client.gin;

import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.ncr.travel.appmgr.client.AppController;
import com.ncr.travel.appmgr.client.model.ApplicationConfigurationFactory;
import com.ncr.travel.appmgr.client.model.ScreenConfigurationFactory;
import com.ncr.travel.appmgr.client.mvp.EventBus;
import com.ncr.travel.appmgr.client.service.AppManagerWebService;

@GinModules(Module.class)
public interface Injector extends Ginjector {

	EventBus getEventBus();

	AppManagerWebService getWebService();

	AppController getAppController();

    /**
     * Gets a new instance of the {@link ApplicationConfigurationFactory} used to
     * generate instances of application config model objects.
     *
     * @return The {@link ApplicationConfigurationFactory} instance.
     */
	ApplicationConfigurationFactory getApplicationConfigurationFactory();

    /**
     * Gets a new instance of the {@link ScreenConfigurationFactory} used to
     * generate instances of screen config model objects.
     *
     * @return The {@link ScreenConfigurationFactory} instance.
     */
	ScreenConfigurationFactory getScreenConfigurationFactory();
}
